<?php
require_once('DataAccess.php');
require_once('MaterialCompraCampus.php');

/**
Interface DAO de Empenho. Estes mï¿½todos Nï¿½O devem ser chamados diretamente.
Ao invï¿½s disso devem ser chamados por mï¿½todos da classe Programa.
*/

class MaterialCompraCampusDAO
{
      private $database;

      public function __construct( )
      {  
               $this->database = DataAccess::getConnection();
      }
      
      public function  CadastrarMaterialCompraCampus( $materialCompraCampus )
      {
      	 

      	$consulta = $this->database->Fetch("BEGIN");

      	if( $consulta != FALSE )
      	{
      		
      		$material = $materialCompraCampus->material;
      		$compraCampus = $materialCompraCampus->compraCampus;
      		$consulta = $this->database->Fetch("INSERT into t_material_t_compra_campus (t_material_id, t_compra_campus_id,qtd, valor_total )
      											VALUES('$material->id','$compraCampus->id','$materialCompraCampus->qtd','$materialCompraCampus->valorTotal')");
      		if( $consulta )
      		{
      			$this->database->Fetch("COMMIT");
      			return TRUE;
      		}
      		else
      		{
      			$this->database->Fetch("ROLLBACK");
      			return FALSE;
      		}
      	}
      	else
      	{
      		$this->database->Fetch("ROLLBACK");
      		return FALSE;
      	}

      }
		
	
	  public function SalvarArrayTermoReferencia($itens, $processoId){
	  	$materialDao = new Material();
	  	$compraCampusDao = new CompraCampus();
	  	$processoDao = new Processo();
	  	$campusDao = new Campus();
	  	
	  	$processo = $processoDao->CarregarProcesso($processoId); 

	  	
	  	
	  		foreach($itens as $item){

	  			$medida = array();
	  			/////////////////// Cadastrar Material ///////////////////////
	  			if(strstr($itens[0]['tipo'], "material")){
	  				$medida[] = array( 'unidadeFornecimento'=>$item['unidadeFornecimento'], 
						 'sigla'=>$item['sigla'], 
						 'capacidade'=>$item['capacidade'], 
						 'unidadeMedida'=>$item['unidadeMedida'] );
	  				$material = $materialDao->CarregarMaterialPorProcessoCodigoEUnidade($processoId, $item['codigo'], $medida);		
	  			}else{
	  				$medida[] = $item['medida'];
	  				$material = $materialDao->CarregarServicoPorProcessoEspecificacaoEMaterial($processoId, $item['especificacao'], $medida);
	  				
	  			}
	  			//$material = $materialDao->CarregarMaterialPorProcessoCodigoEUnidade($processoId, $item['codigo'], $medida);		
	  			if($material == NULL){
	  				if(strstr($itens[0]['tipo'], "material")){
	  					$material = new Material(NULL, $item['codigo'], $item['especificacao'], $medida, $item['valor']*$item['quantidade'], $item['grupo'], $item['quantidade'], $processoId, $item['tipo'] );
	  				}else{
	  					$material = new Material(NULL, NULL, $item['especificacao'], $medida, $item['valor']*$item['quantidade'], NULL, $item['quantidade'], $processoId, $item['tipo'] );
	  				}
	  				$result = $material->Salvar();
	  				if(!$result){
	  					throw new Exception("Problema na inserção dos itens do processo de compras no banco de dados. Erro:".mysql_error(DataAccess::getConnection())."");
	  				}else{
	  					$material->id = $result;
	  				}
	  			}else{
	  				$material->quantidade += $item['quantidade'];
	  				$material->valor += $item['valor']*$item['quantidade'];
                                        
	  				$result = $material->Atualizar();
	  				if(!$result){
	  					throw new Exception("Problema na atualização dos itens do processo de compras no banco de dados. Erro:".mysql_error(DataAccess::getConnection())."");
	  				}
	  			}
	  			
	  			
	  			////////////////// Cadastrar CompraCampus ///////////////////////
	  			$compraCampus = $compraCampusDao->CarregarPorProcessoECampus($processoId, $item['campusId']);
	  			
	  			if($compraCampus == NULL){
	  				$campus = $campusDao->CarregarCampus($item['campusId']);
	  				$valorTotal = $item['valor']*$item['quantidade'];
	  				$compraCampus = new CompraCampus(NULL ,$processo, $campus, 0, NULL, $valorTotal );
	  				$result = $compraCampus->Salvar();
	  				if(!$result)
	  					throw new Exception("Problema na inserção da tabela compra_campus no banco de dados. Erro:".mysql_error(DataAccess::getConnection())."");
	  				else
	  					$compraCampus->id = $result;
	  			}else{
	  				$compraCampus->valorTotal += $item['valor']*$item['quantidade'];
	  				$result = $compraCampus->Alterar();
	  				if(!$result)
	  					throw new Exception("Problema na atualização da tabela compra_campus no banco de dados. Erro:".mysql_error(DataAccess::getConnection())."");
	  			}
	  			
	  			///////////////// Cadastrar o MaterialCompraCampus FINALY ////////////////////

	  			$materialCompraCampus = new MaterialCompraCampus(NULL , $material, $compraCampus, $item['quantidade'] , $item['valor'] );
	  			$materialCompraCampus->Salvar();
	  			
	  			
	  		}
	  	
	  	
	  }
	  
      
      public function AlterarMaterialCompraCampus( $materialCompraCampus )
      {
      	$consulta = $this->database->Fetch("BEGIN");
      	
      	if( $consulta )
      	{
			//$compraCampus = $materialCompraCampus->compraCampus;
			$material = $materialCompraCampus->material;
			$compraCampus = $materialCompraCampus->compraCampus;			      		
      		$consulta = $this->database->Fetch("UPDATE t_material_t_compra_campus 
      											SET t_material_id = '$material->id' ,
      											t_compra_campus_id = '$compraCampus->id',
      											qtd = '$materialCompraCampus->qtd',
      											valor_total = '$materialCompraCampus->valorTotal'      											
      											where id = '$materialCompraCampus->id'");
      		if ( $consulta )
      		{
      			$this->database->Fetch("COMMIT");
      			return TRUE;
      		}
      		else
      		{
      			$this->database->Fetch("ROLLBACK");
      		}
      	}
      	else
      	{
      		$this->database->Fetch("ROLLBACK");
      	}
      }
      
      public function ExcluirMaterialCompraCampus( $materialCompraCampusId )
      {
      	$consulta = $this->database->Fetch("BEGIN");
      	
      	if( $consulta )
      	{
      		$consulta = $this->database->Fetch("Delete from t_material_t_compra_campus where id = '$materialCompraCampusId'");
      		
      		if ( $consulta )
      		{
      			$this->database->Fetch("COMMIT");
      			return TRUE;
      		}
      		else
      		{
      			$this->database->Fetch("ROLLBACK");
      		}
      	}
      	else
      	{
      		$this->database->Fetch("ROLLBACK");
      	}
      	
      }
      
      public function ExcluirPorCompraCampus($idCompraCampus){
      	$consulta = $this->database->Fetch("BEGIN");
      	
      	if( $consulta )
      	{
      		$consulta = $this->database->Fetch("Delete from t_material_t_compra_campus where t_compra_campus_id = '$idCompraCampus'");
      		
      		if ( $consulta )
      		{
      			$this->database->Fetch("COMMIT");
      			return TRUE;
      		}
      		else
      		{
      			$this->database->Fetch("ROLLBACK");
      			return FALSE;
      		}
      	}
      	else
      	{
      		$this->database->Fetch("ROLLBACK");
      		return FALSE;
      	}
      }
      
     
      public function LoadMateriaisCompraCampus( $id )
      {
             $consulta = $this->database->Fetch(" SELECT * FROM t_material_t_compra_campus WHERE id = '$id'");
             if( $consulta != FALSE )
             {
                  $rows = $this->database->getRow();
                  $objetos = array();

                  for( $i = 0; $i < count($rows); $i++ )
                  {
                       $materialCompraCampus = new MaterialCompraCampus();
                       $materialCompraCampus->id = $rows[$i]['id'];
                       $m = new Material();                       
                       $materialCompraCampus->material = $m->CarregarMaterialPorId($rows[$i]['t_material_id']);
                       $materialCompraCampus->compraCampusId = $rows[$i]['t_compra_campus_id'];                        
                       $materialCompraCampus->qtd = $rows[$i]['qtd'];
                       $materialCompraCampus->valorTotal = $rows[$i]['valor_total'];
                                                           			

                       $objetos[] = $materialCompraCampus;
                  }

                  return $objetos;
             }
             else if( mysql_num_rows( $consulta ) == 0 )
             {
                 return FALSE;
             }
      }
      
}
?>
